﻿#define _CRT_SECURE_NO_WARNINGS 1
//春天是鲜花的季节，水仙花就是其中最迷人的代表，数学上有个水仙花数，
//他是这样定义的：“水仙花数”是指一个三位数，它的各位数字的立方和等于其本身，比如：153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3。
//现在要求输出所有在m和n范围内的水仙花数。
//#include <stdio.h>
//int main()
//{
//	int t[] = { 153, 370, 371, 407 };
//	int m, n;
//	int i = 0;
//	char tmp = 1;
//	while (scanf("%d%d", &m, &n) != EOF)
//	{
//		i = 0;
//		tmp = 1;
//		for (; i < 4; i++)
//			if (t[i] >= m && t[i] <= n)
//			{
//			printf("%d ", t[i]);
//			tmp = 0;
//			}
//		if (tmp)
//			printf("no");
//		printf("\n");
//	}
//	return 0;
//}




//有一个无限长的数字序列1，2，2，3，3，3，4，4，4，4，5，5，5，5，5。。。
//（数字序列从1开始递增，且数字k在该序列中正好出现k次），求第n项是多少
//#include <stdio.h>
//int main()
//{
//	int n = 0;
//	int k = 0;
//	scanf("%d", &k);
//	int i = 0;
//	if (k == 1)
//	{
//		printf("1");
//	}
//	else
//	{
//		for (i = 0; n<k; i++)
//		{
//			n += i;
//		}
//		printf("%d", i - 1);
//	}
//	return 0;
//}



//请考虑性能
//输入描述 :一个整数N
//输出描述 :小于N的质数数量
//#include <stdio.h>
//int main()
//{
//	int n = 0;
//	int i = 0;
//	int j = 0;
//	int count = 1;
//	int tmp = 1;
//	scanf("%d", &n);
//	for (i = 3; i<n; i++)
//	{
//		for (j = i - 1; j>1; j--)
//		{
//			if (i%j == 0)
//			{
//				count = 0;
//				break;
//			}
//		}
//		tmp += count;
//		count = 1;
//	}
//	printf("%d", tmp);
//	return 0;
//}


//把一个32 - bit整型转成二进制，其中包含多少个1，比如5的二进制表达是101，其中包含2个1
//#include <stdio.h>
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int count = 0;
//	int a = 0;
//	while (n)
//	{
//		a = n % 2;
//		if (a == 1)
//		{
//			count++;
//		}
//		n = n >> 1;
//	}
//	printf("%d", count);
//	return 0;
//}





//我们定义一个由数字 0 和 1 组成的序列是交错序列，当且仅当在这个序列中 0 和 1 是轮流 出现的，比如，0，010，10101 都是交错序列。
//现在给出了一个由数字 0 和 1 组成的序列𝐴，它可能不是一个交错序列，但是你可以从这个 序列中选择一些数字出来，
//按他们在序列𝐴中原有的相对顺序排列(即选取𝐴的一个子序列)， 使得你最后得到的是一个交错序列。问这样能得到的交错序列的最长长度是多少
//#include <stdio.h>
//int main()
//{
//	int str[100000];
//	int n = 0;
//	scanf("%d", &n);
//	int i = 0;
//	int count = 1;
//	for (i = 0; i<n; i++)
//	{
//		scanf("%d", &str[i]);
//	}
//	for (i = 1; i<n; i++)
//	{
//		if (str[i] != str[i - 1])
//		{
//			count++;
//		}
//	}
//	printf("%d", count);
//	return 0;
//}




//菲波那契数列是指这样的数列：数列的第一个和第二个数都为1，
//接下来每个数都等于前面2个数之和。给出一个正整数K，要求菲波那契数列中第k个数是多少。
//#include <stdio.h>
//int main()
//{
//	int k = 0;
//	scanf("%d", &k);
//	int a = 1;
//	int b = 0;
//	int tmp = 0;
//	int i = 0;
//	for (i = 0; i<k; i++)
//	{
//		tmp = a + b;
//		a = b;
//		b = tmp;
//	}
//	printf("%d", tmp);
//	return 0;
//}




//两个int32整数m和n的二进制表达，计算有多少个位(bit)不同？
//#include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d%d", &a, &b);
//	a = a^b;
//	b = 0;
//	while (a>0)
//	{
//		if (a & 1)
//		{
//			b += 1;
//		}
//		a = a >> 1;
//	}
//	printf("%d\n", b);
//	return 0;
//}




//在英文中, 我们会把一些长的名字或者短语进行缩写。例如"looks good to me"缩写为"lgtm", 短语中的每个单词的首字母组成缩写。
//现在给出一个字符串s, 字符串s中包括一个或者多个单词, 单词之间以空格分割, 请输出这个字符串的缩写
//#include <stdio.h>
//int main()
//{
//	char str[51];
//	gets(str);
//	int len = strlen(str);
//	int i = 0;
//	char str1[51] = { 0 };
//	int count = 1;
//	str1[0] = str[0];
//	for (i = 0; i<len - 1; i++)
//	{
//		if (str[i] == ' ')
//		{
//			str1[count++] = str[i + 1];
//		}
//	}
//	printf("%s", str1);
//	return 0;
//}